//
//  NSObject+Printlvar.swift
//  表情键盘
//
//  Created by WGP on 16/4/20.
//  Copyright © 2016年 WGP. All rights reserved.
//

import Foundation

extension NSObject
{
    class func printIvars() {
//        利用运行时获取类里面的成员变量
        
        var outCount: UInt32 = 0
        
//        ivars实际上是一个数组
        let ivars = class_copyIvarList(self, &outCount)
        
//        获取里面的每一个元素
        for i in 0..<outCount
        {
//            ivar是一个结构体的指针
            let ivar = ivars[Int(i)]
            
//          获取 成员变量的名称,cName c语言的字符串,首元素地址
            let cName = ivar_getName(ivar)
            
            let name = String(CString: cName, encoding: NSUTF8StringEncoding)
            
            print("name: \(name)")
        }
        
//        方法中有copy,create,的都需要释放
        free(ivars)
    }
}
